<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

/**
 * 회원가입 컨트롤러
 */
class Join extends CI_Controller {
	
	var $data = array();
	
	function __construct() {
		parent::__construct();
		$this->data['category']['main'] = $this->uri->segment(1);
		$this->data['category']['sub']  = $this->uri->segment(2);

		// 모델 불러오기
		$this->load->model('member/Join_model', 'model', TRUE);
	}

	// Default
	function index() {
		$this->main();
	}

	/**
	 * Step 0 : 회원가입 안내
	 */
	function main() {
		// 뷰로 이동
		$this->load->view('member/join_main_v', $this->data);
	}

	/**
	 * Step 1 : 이용약관 동의
	 */
	function confirm() {
		// 뷰로 이동
		$this->load->view('member/join_confirm_v', $this->data);
	}

	/**
	 * Step 2 : 실명인증 / 중복체크
	 */
	function identity_check() {
		log_message('debug', "@@@@ Join::identity_check()");

		// 뷰로 이동
		$this->load->view('member/join_identity_check_v', $this->data);
	}
	
	/**
	 * Step 3 : 양식 작성
	 */
	function form() {
		log_message('debug', "@@@@ Join::form()");

		// 중복 방지
		$ipin_di   = $this->input->post('ipin_di', TRUE);	// 실명인증하면서 얻어온 중복방지 코드 (일종의 가상 주민번호 역할)
		$birthdate = $this->input->post('birthdate', TRUE);
				
		if ($this->model->is_already_user($ipin_di)) {
			$this->load->view('member/join_fail_already_v', $this->data);
			return;
		}
		
		// 회원이름
		$this->data['user_name'] = $this->input->post('user_name', TRUE);
		
		// 실명인증 받을때 얻은 정보
		//$this->data['birthdate'] = $this->input->post('birthdate', TRUE);
		$this->data['birth_yyyy'] = substr($birthdate, 0,4);
		$this->data['birth_mm']   = substr($birthdate, 5,2);
		$this->data['birth_dd']   = substr($birthdate, 8,2);
		$this->data['sex']        = $this->input->post('sex', TRUE);
		$this->data['ipin_di']    = $ipin_di;
		
		
		if (empty($ipin_di)) {
			die('올바른 접근이 아닙니다.');
		}

		// 뷰로 이동
		$this->load->view('member/join_form_v', $this->data);
	}

	/**
	 * Step 3-1 : ID 중복체크
	 * AJAX
	 */
	function id_check() {
		log_message('debug', "@@@@ Join::id_check()");

		// 폼 정보 가져오기
		$user_id = $this->input->post('user_id', TRUE);
		
		$isAlreay = $this->model->is_already_id($user_id);
		if ($isAlreay == TRUE) {
			echo 'false';
		} else {
			echo 'true';
		}
		exit;
	}

	/**
	 * Step 3-2 : 닉네임 중복체크
	 * AJAX
	 */
	function nickname_check() {
		log_message('debug', "@@@@ Join::nickname_check()");

		// 폼 정보 가져오기
		$nickname = $this->input->post('nickname', TRUE);
		
		// 금칙어
		if (preg_match('/(운영자|관리자|개발자)/',$nickname) > 0) {
			echo 'false';
			exit;
		}
		
		$is_alreay = $this->model->is_already_nickname($nickname);
		if ($is_alreay == TRUE) {
			echo 'false';
		} else {
			echo 'true';
		}
		exit;
	}
	
	/**
	 * Step 3-3 : 이메일 중복체크
	 * AJAX
	 */
	function email_check() {
		log_message('debug', "@@@@ Join::email_check()");

		// 폼 정보 가져오기
		$email = $this->input->post('email', TRUE);
		
		$is_alreay = $this->model->is_already_email($email);
		if ($is_alreay == TRUE) {
			echo 'false';
		} else {
			echo 'true';
		}
		exit;
	}

	/**
	 * Step 4 : 회원가입 처리
	 * 새로고침이나 뒤로가기 했을때 다시 등록 안되도록 해야함.
	 */
	function register() {
		log_message('debug', "@@@@ Join::register()");

		// 폼 정보 가져오기
		$member['ipin_di']    = $this->input->post('ipin_di', TRUE);
		$member['user_id']    = $this->input->post('user_id', TRUE);

		if (empty($member['user_id']) || empty($member['ipin_di'])) {
			die('올바른 접근이 아닙니다.');
		}

		if ($this->model->is_already_user($member['ipin_di'])) {
			$this->load->view('member/join_fail_already_v', $this->data);
			return;
		}

		$member['user_name']  = $this->input->post('user_name', TRUE);
		$member['nickname']   = $this->input->post('nickname', TRUE);
		$member['sex']        = $this->input->post('sex', TRUE);
		$member['email']      = $this->input->post('email', TRUE);
		$member['mailing_yn'] = $this->input->post('mailing_yn', TRUE);
		$member['mailing_yn'] = $member['mailing_yn'] != 'Y' ? 'N' : 'Y';
		$member['sms_yn']     = $this->input->post('sms_yn', TRUE);
		$member['sms_yn']     = $member['sms_yn'] != 'Y' ? 'N' : 'Y';
		$member['pwd']        = $this->input->post('pwd', TRUE);
		$member['pwd']        = crypt($member['pwd'], $this->config->item('encryption_key'));	//패스워드는 암호화 저장
		$member['birthdate']  = $this->input->post('birthdate', TRUE);
		$member['birthtime']  = $this->input->post('birth_hh', TRUE);
		$tmp_birth_solunar    = $this->input->post('birth_solunar', TRUE);
		$tmp_birth_solunar    = preg_split("/_/", $tmp_birth_solunar);
		$member['birth_solunar'] = $tmp_birth_solunar[0];
		$member['cl_year']       = $tmp_birth_solunar[1];
		
		//$member['telephone']  = $this->input->post('telephone', TRUE);
		$member['cellphone']  = $this->input->post('cellphone', TRUE);
		$member['zip_code']   = $this->input->post('zip_code', TRUE);
		$member['addr1']      = $this->input->post('addr1', TRUE);
		$member['addr2']      = $this->input->post('addr2', TRUE);
		// $arrInterest          = $this->input->post('interest', TRUE);
		// $member['interest'] = '';
		// for ($i=0; $i < count($arrInterest); $i++) { 
// 			$member['interest'] .= $arrInterest[$i].',';
		// }
		// $member['interest'] = substr($member['interest'], 0, -1);	// 마지막 콤마 제거

		// 기본값 세팅
		$member['use_yn']   = 'Y';
		$member['class_cd'] = 'GEN';
		$member['login_ip'] = $_SERVER['REMOTE_ADDR'];	// 로긴 IP
		
		// DB에 회원 등록
		$result = $this->model->insert_member($member);

		// 가입 보너스 포인트
		$this->load->model('point/Point_model', 'point_model', TRUE);
		$this->point_model->update_activity_point($member['user_id'], 'JOIN');

		// 로그인 상태로 만들기
		// if ($result == TRUE) {
			// $arr_userinfo = array(
				// 'login_yn'   => 'Y',
				// 'user_id'    => $member['user_id'],
				// 'user_name'  => $member['user_name'],
				// 'nickname'   => $member['nickname'],
				// 'package_cd' => PREM_GENERAL
			// );
			// $this->session->set_userdata('userinfo', $arr_userinfo);
		// }
		
		// 가입 완료 메일 발송
		$this->_send_email_welcome($member['email'], $member['user_name']);
		
		redirect(ROOT_URL.'/member/join/complete', 'refresh');
	}

	// 가입 완료페이지
	function complete() {
		log_message('debug', "@@@@ Join::complete()");

		$this->load->view('member/join_complete_v', $this->data);
	}
	
	/**
	 * 가입 완료 메일발송
	 */
	function _send_email_welcome($to_email, $user_name) {
		log_message('debug',"@@@@ Join::send_email_welcome($to_email, $user_name)");
		
		$params['to_email']  = $to_email;
		$params['user_name'] = $user_name;

		$url = SSL_ROOT_URL."/external/xpm4/mail-dm_join.php";
		$req = new HttpRequest($url, HttpRequest::METH_POST);
		$req->addPostFields($params);

		try {
			$return_obj = $req->send()->getBody();
			$this->logsql->log_result($return_obj);
			return TRUE;
		} catch (HttpException $ex) {
			log_message('error','@@ 회원 가입 완료 메일 발송중 에러 발생');
			echo $ex;
			return FALSE;
		}
	}

}

/* End of file join.php */
/* Location: ./application/controllers/member/join.php */